{% macro conntrack_helpers(module_map, modules, ipv4=True) %}
{% if modules.ftp is vyos_defined %}
    ct helper ftp_tcp {
        type "ftp" protocol tcp;
    }
{% endif %}

{% if modules.h323 is vyos_defined %}
    ct helper ras_udp {
        type "RAS" protocol udp;
    }

    ct helper q931_tcp {
        type "Q.931" protocol tcp;
    }
{% endif %}

{% if modules.pptp is vyos_defined and ipv4 %}
    ct helper pptp_tcp {
        type "pptp" protocol tcp;
    }
{% endif %}

{% if modules.nfs is vyos_defined %}
    ct helper rpc_tcp {
        type "rpc" protocol tcp;
    }

    ct helper rpc_udp {
        type "rpc" protocol udp;
    }
{% endif %}

{% if modules.rtsp is vyos_defined and ipv4 %}
    ct helper rtsp_tcp {
        type "rtsp" protocol tcp;
    }
{% endif %}

{% if modules.sip is vyos_defined %}
    ct helper sip_tcp {
        type "sip" protocol tcp;
    }

    ct helper sip_udp {
        type "sip" protocol udp;
    }
{% endif %}

{% if modules.tftp is vyos_defined %}
    ct helper tftp_udp {
        type "tftp" protocol udp;
    }
{% endif %}

{% if modules.sqlnet is vyos_defined %}
    ct helper tns_tcp {
        type "tns" protocol tcp;
    }
{% endif %}

    chain VYOS_CT_HELPER {
{% for module, module_conf in module_map.items() %}
{%     if modules[module] is vyos_defined %}
{%         if 'nftables' in module_conf %}
{%             if module_conf.ipv4 is not vyos_defined or module_conf.ipv4 == ipv4 %}
{%                 for rule in module_conf.nftables %}
        {{ rule }}
{%                 endfor %}
{%             endif %}
{%         endif %}
{%     endif %}
{% endfor %}
        return
    }
{% endmacro %}
